== 介绍 == 
本协议用于G2E项目；
此协议用于MCU与CPU通讯。

== 通讯协议 == 
=== CPU 与 MCU通讯协议 ===
====物理层协议====
*通过串口通讯，9600波特率，校验位无，数据位8位，停止位1位
=====帧格式表=====
{| class="wikitable sortable"
|-
! 起始位   !! 数据位 !! 校验位置 !! 结束位置
|-
|0xA5,一个字节长度||见数据位表，变长||数据位（从数据位开始到数据位结束）的CRC校验，2个字节长度，低位在前，高位在后||0x5A，一个字节长度
|}

=====数据位表=====
{| class="wikitable sortable"
|-
! 数据来源地址  !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容
|-
|0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板，'''目前只有一块335X CPU 板子，只用到0x01'''；<br>'''0x81表示 电源充电控制板'''，一个字节||0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板'''目前只有一块335X CPU 板子，只用到0x01'''；<br>0x81表示 电源充电控制板'''；<br>0x80表示目的地址是广播给所有的CPU电路板，0xfe表示目的地址是所有的STM32电路板，0xff表示广播给系统中所有设备，其他地址备用，一个字节长度||主动发送数据设备没发送一次数据加一个，两个字节，低位在前，高位在后（大于0xffff，清零），接收需要返回数据同数据返回||数据命令以及数据内容部分数据长度，两个字节，低位在前，高位在后||见数据命令以及数据内容表，变长
|}

=====数据命令以及数据内容表=====      
{| class="wikitable sortable"
|-
! 命令序号（定长，两个字节低位在前，高位在后），第7-8位   !! 命令内容（变长，0到n个字节），第9位开始 !! 是否需要回复（定长，1个字节）
|-
|1，CPU发送心跳||无||1表示需要返回
|-
|2，RA应答心跳||0（超过1分钟没有收到任何数据，RA重启CPU）||0表示无需返回
|-
|9，RA上报状态||电池电压（2个字节，地位在前，高位在后，单位mV）；12V输入状态（1个字节，0没有供电，1供电且电正常，2供电但是电压过压）；CPU电压12V状态（1个字节，0没有供电，1供电且电正常）；4G电压12V状态（1个字节，0没有供电，1供电且电正常）||1表示需要返回
|-
|19，CPU 下达准备关机命令||无||1表示需要返回
|-
|20，RA回复||0表示正常，1表示错误。RA收到此命令后30S关闭CPU电源||0表示无需返回
|-
|21，CPU 下达打开，关闭看门狗命令||1，打开看门狗，0关闭看门狗，0个字节||1表示需要返回
|-
|22，STM32回复||0表示正常，1表示错误||0表示无需返回
|-
|23，CPU设置时间和电压值||cpu关机超时时间，2个字节，默认300秒；通知上位机关机的最小电压,默认9500mv；电源低电压值，默认9500mv；电源高电压值，默认13500mv。一共8个字节，默认电压正负5000mV值范围内设置有效，如设置超出范围或者设置0则使用默认值 ||1表示需要返回,0表示无需返回
|}